'''这个脚本是输出当前核心文件夹的层级关系，便于让大模型理解，方便调试'''
import os
def print_core_structure(root_dir, is_top_level=True, prefix=""):
    """
    修正版：只在顶层筛选 config、src、data，子文件夹全部递归显示
    避免重复嵌套问题，准确反映实际结构
    """
    # 顶层目录只处理 config、src、data
    if is_top_level:
        entries = os.listdir(root_dir)
        core_dirs = [d for d in entries if d in ['config', 'src', 'data'] and os.path.isdir(os.path.join(root_dir, d))]
    else:
        # 子目录显示所有文件夹
        entries = os.listdir(root_dir)
        core_dirs = [d for d in entries if os.path.isdir(os.path.join(root_dir, d))]

    # 处理文件夹
    for i, dir_name in enumerate(core_dirs):
        dir_path = os.path.join(root_dir, dir_name)
        is_last = i == len(core_dirs) - 1

        # 打印文件夹名称
        print(f"{prefix}{'└── ' if is_last else '├── '}{dir_name}/")

        # 准备子目录前缀
        new_prefix = f"{prefix}{'    ' if is_last else '│   '}"

        # 递归处理子目录（非顶层，不限制文件夹类型）
        print_core_structure(dir_path, is_top_level=False, prefix=new_prefix)

    # 处理当前目录下的关键文件（.py、配置文件等）
    files = [f for f in os.listdir(root_dir) if os.path.isfile(os.path.join(root_dir, f))]
    important_files = []
    for file in files:
        if (file.endswith(".py") or
                file.endswith((".env", ".json", ".yaml", ".yml", ".ini")) or
                file.endswith(".db") or
                (file.startswith("requirements") and file.endswith(".txt"))):
            important_files.append(file)

    # 打印文件
    for i, file_name in enumerate(important_files):
        is_last = i == len(important_files) - 1
        print(f"{prefix}{'└── ' if is_last else '├── '}{file_name}")


if __name__ == "__main__":
    # 使用原始字符串（r前缀）避免转义字符警告
    root_project_dir = r"E:\zbs_agent"  # 修正：添加r前缀

    if not os.path.exists(root_project_dir):
        print(f"错误：未找到项目根目录 '{root_project_dir}'")
    else:
        print(f"===== {root_project_dir} 核心结构（仅config、src、data） =====")
        print_core_structure(root_project_dir)
        print("\n===== 说明 =====")
        print("只展示核心文件夹（config/src/data）及内部关键文件（.py/配置/数据库等）")
